The operation can be any function expression with or without a parameter. The list must be quoted and the parameter x MUST be used to represent the symbol-pattern.
(gen-evolve 4 '(symbol-scroll 2 x) '(a b c d e))
--> (a b c d e d e a b c b c d e a e a b c d c d e a b)
If the keyword :list is used the evolutions are contained in separate lists. If omited, as above, the evolutions are appended.
(gen-evolve 3 '(gen-random nil 8 x)
'(a b c d e f g h) :list 0.12)
--> ((a b c d e f g h) (d a c g a d c c) (a a c g c d c d)
(a a a c a c d a))
Where randomization in an operation is necessary but the output needs to be recalled an optional random seed can be set.
Use :zones to evolve a zoned pattern.
(gen-evolve 3 '(symbol-transpose 2 x) '((a b c d) (a b c d)) :zones)
--> ((a b c d) (a b c d) (c d e f) (c d e f) (e f g h) (e f g h) (g h i j) (g h i j))